Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / scripts / post_ci_results.sh

Displaying Raw • Download


scripts/post_ci_results.sh 997de18d78cfedafac446515b00a9e9d5f34ef71 (997de18d) Text, 2.89 KB

T8b949e#!/bin/bash
Tffa657set -e

T8b949e# Required environment variables:
T8b949e# GITEA_TOKEN
T8b949e# GITHUB_REPOSITORY
T8b949e# GITHUB_EVENT_PATH
T8b949e# GITHUB_SERVER_URL
T8b949e# GITHUB_RUN_ID

Tff7b72if Tff7b72[ -z Ta5d6ff"Te6edf3$GITEA_TOKENTa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"GITEA_TOKEN is not set. Skipping PR comment."
Tffa657exit T79c0ff0
Tff7b72fi

T8b949e# Extract PR number from the event JSON
Tff7b72if Tff7b72[ -f Ta5d6ff"Te6edf3$GITHUB_EVENT_PATHTa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Te6edf3PR_NUMBERTff7b72=Tff7b72$(jq -r Ta5d6ff'.pull_request.number' Ta5d6ff"Te6edf3$GITHUB_EVENT_PATHTa5d6ff"Tff7b72)
Tff7b72else
Tffa657echo Ta5d6ff"GITHUB_EVENT_PATH not found. Skipping."
Tffa657exit T79c0ff0
Tff7b72fi

Tff7b72if Tff7b72[ Ta5d6ff"Te6edf3$PR_NUMBERTa5d6ff" Tff7b72=Tff7b72= Ta5d6ff"null" Tff7b72] Tff7b72|| Tff7b72[ -z Ta5d6ff"Te6edf3$PR_NUMBERTa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Not a pull request. Skipping."
Tffa657exit T79c0ff0
Tff7b72fi

Te6edf3REPORT_TYPETff7b72=Te6edf3$1
Te6edf3INPUT_FILETff7b72=Tffd700${Te6edf32Tff7b72:-Te6edf3ci_resultsTb4b4b4.txtTffd700}

Tff7b72if Tff7b72[ ! -f Ta5d6ff"Te6edf3$INPUT_FILETa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Te6edf3$INPUT_FILETa5d6ff not found. Nothing to post.Ta5d6ff"
Tffa657exit T79c0ff0
Tff7b72fi

Te6edf3RUN_URLTff7b72=Ta5d6ff"Tffd700${Te6edf3GITHUB_SERVER_URLTffd700}Ta5d6ff/Tffd700${Te6edf3GITHUB_REPOSITORYTffd700}Ta5d6ff/actions/runs/Tffd700${Te6edf3GITHUB_RUN_IDTffd700}Ta5d6ff"

T8b949e# Clean up ANSI escape sequences (colors) from the output
T8b949e# This makes the markdown output readable
sed -i Ta5d6ff's/\x1b\[[0-9;]*[mK]//g' Ta5d6ff"Te6edf3$INPUT_FILETa5d6ff"

Tff7b72if Tff7b72[ Ta5d6ff"Te6edf3$REPORT_TYPETa5d6ff" Tff7b72=Tff7b72= Ta5d6ff"bench" Tff7b72]Tb4b4b4; Tff7b72then
Te6edf3HEADERTff7b72=Ta5d6ff"### Benchmark Summary (automated report)"
T8b949e# Extract from summary start to the end, removing progress lines
T8b949e# We look for the start of the benchmark summary table
Te6edf3RESULTSTff7b72=Tff7b72$(sed -n Ta5d6ff'/==================== BENCHMARK SUMMARY ====================/,$p' Ta5d6ff"Te6edf3$INPUT_FILETa5d6ff" Tb4b4b4| grep -v Ta5d6ff"Progress:"Tff7b72)
Tff7b72else
Te6edf3HEADERTff7b72=Ta5d6ff"Ta5d6ff### CI Status Report: Te6edf3$REPORT_TYPETa5d6ff"
T8b949e# Check for failures
Tff7b72if grep -qiE Ta5d6ff"FAILED|error|❌|exit status|failure" Ta5d6ff"Te6edf3$INPUT_FILETa5d6ff"Tb4b4b4; Tff7b72then
T8b949e# Try to find a meaningful summary
Tff7b72if grep -q Ta5d6ff"short test summary info" Ta5d6ff"Te6edf3$INPUT_FILETa5d6ff"Tb4b4b4; Tff7b72then
Te6edf3RESULTSTff7b72=Tff7b72$(sed -n Ta5d6ff'/=========================== short test summary info ============================/,$p' Ta5d6ff"Te6edf3$INPUT_FILETa5d6ff"Tff7b72)
Tff7b72elif grep -q Ta5d6ff"Found [0-9]* error" Ta5d6ff"Te6edf3$INPUT_FILETa5d6ff"Tb4b4b4; Tff7b72then
T8b949e# Ruff/Lint style errors
Te6edf3RESULTSTff7b72=Tff7b72$(grep -A T79c0ff20 -B T79c0ff2 -E Ta5d6ff"Found [0-9]* error|::error|❌" Ta5d6ff"Te6edf3$INPUT_FILETa5d6ff"Tff7b72)
Tff7b72else
T8b949e# Extract lines that look like errors, with some context, limited to avoid too long comments
Te6edf3RESULTSTff7b72=Tff7b72$(grep -Ci T79c0ff1 -E Ta5d6ff"FAILED|::error|❌|exit status|failure" Ta5d6ff"Te6edf3$INPUT_FILETa5d6ff" Tb4b4b4| tail -n T79c0ff40Tff7b72)
Tff7b72fi
Te6edf3HEADERTff7b72=Ta5d6ff"Ta5d6ff### ❌ CI Failure: Te6edf3$REPORT_TYPETa5d6ff"
Tff7b72else
Te6edf3RESULTSTff7b72=Ta5d6ff"All checks passed! ✅"
Tff7b72fi
Tff7b72fi

Tff7b72if Tff7b72[ -z Ta5d6ff"Te6edf3$RESULTSTa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Te6edf3RESULTSTff7b72=Ta5d6ff"Ta5d6ffNo detailed results found in Te6edf3$INPUT_FILETa5d6ff"
Tff7b72fi

T8b949e# Construct the message
T8b949e# Note: Gitea/GitHub PR reviews use a JSON body where \n is a literal newline
Te6edf3BODYTff7b72=Ta5d6ff"Tffd700${Te6edf3HEADERTffd700}Ta5d6ff\n\nTa5d6ff"
Te6edf3BODYTff7b72=Ta5d6ff"Tffd700${Te6edf3BODYTffd700}Ta5d6ff\`\`\`text\nTffd700${Te6edf3RESULTSTffd700}Ta5d6ff\n\`\`\`\n\nTa5d6ff"
Te6edf3BODYTff7b72=Ta5d6ff"Tffd700${Te6edf3BODYTffd700}Ta5d6ff🔗 [View Full Run](Tffd700${Te6edf3RUN_URLTffd700}Ta5d6ff)Ta5d6ff"

T8b949e# Use jq to construct the JSON payload safely
Te6edf3JSON_PAYLOADTff7b72=Tff7b72$(jq -n Tffea00\
--arg body Ta5d6ff"Te6edf3$BODYTa5d6ff" Tffea00\
Ta5d6ff'{body: $body, event: "COMMENT"}'Tff7b72)

T8b949e# Post to Gitea
curl -f -X POST Tffea00\
-H Ta5d6ff"Ta5d6ffAuthorization: token Te6edf3$GITEA_TOKENTa5d6ff" Tffea00\
-H Ta5d6ff"Content-Type: application/json" Tffea00\
-d Ta5d6ff"Te6edf3$JSON_PAYLOADTa5d6ff" Tffea00\
Ta5d6ff"Ta5d6ffhttps://git.quad4.io/api/v1/repos/Tffd700${Te6edf3GITHUB_REPOSITORYTffd700}Ta5d6ff/pulls/Tffd700${Te6edf3PR_NUMBERTffd700}Ta5d6ff/reviewsTa5d6ff"


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────